<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 一. 命名函数 (声明式)
    function add(a,b){
        return a + b;
    }
    // console.log(add);
    // add()

    // 默认情况下  js语法在解析函数时 是以命名函数方式解读的  => 不能直接创建匿名函数 放在作用域中  (匿名函数一般情况下 不能单独存在)
    // function(a,b){
    //     return a + b;
    // }

    // 二 .匿名函数
    // 1. 把匿名函数存储到 变量 数组 对象   (赋值式)
    // var fn = function(a,b){
    //     return a + b;
    // }
    // console.log(fn);
    // var result = fn(1,2)
    // console.log(result);

    // var arr = [1,2,3,function(){}]
    // var obj = {
    //     name:"张三",
    //     age:18,
    //     say:function(){
    //         console.log("hello");
    //     }
    // }

    // btn.onclick = function(){
    //     alert(1111);
    // }

    // 2. 匿名函数的自调用/自执行
    // (function(a,b){
    //     return a + b;
    // })

    // ;+function(a,b){
    //         return a + b;
    // }
    // ;-function(a,b){
    //         return a + b;
    // }
    // ;!function(a,b){
    //         return a + b;
    // }

    
    (function(a,b){
        console.log(a,b);
        return a + b;
    })(100,200);
 

   /*  var result = (function(a,b){
        console.log(a,b);
        return a + b;
    })(100,200);
    console.log(result); */

    // 3. 函数也可以作为实际参数(了解)   => 回调函数
    /* console.log(add);
    console.log(function(a,b){  
        console.log(a,b);
        return a + b;
    }); */


    // 三.构造函数创建 (官方给定的创建函数的方法  也属于匿名函数)  => 了解(不常用)
    var fn = new Function("a","b","return a + b");  //  也属于匿名函数=>赋值式
    console.log(fn);










    // var num = 2;
    // num.toFixed(2);
    // (2).toFixed(2);






</script>
</html>